1

个人对redux的理解:

其实阮一峰大神已经把redux诠释的很清楚,在此我只是在他的基础上加了一些我的理解。

首先有几句话我觉得说的非常到位:
1、"如果你不知道是否需要 Redux,那就是不需要它。"
2、"只有遇到 React 实在解决不了的问题,你才需要 Redux 。"
3、Web 应用是一个状态机,视图与状态是一一对应的。
4、所有的状态,保存在一个对象里面。

react的核心思想就是组件,链接组件的两大特性:
1、props:如同流水一样,数据传入最到最下层组件
2、state:组件的状态

每个组件都可以有状态,简单都组件交互都可以用state完成;
以有无state可将组件分为两种:智能组件、木偶组件
木偶组件:只负责页面的展示,别人给他什么,他就展示什么
智能组件:当state状态发生改变的时候,react会跟新ui层,当组件有state的时候他可以控制自身或者子组件的显示内容

class Parent extends React.Component{
    state = {
        children: "",
    };
    changeChildren = () => {
        const children = "children";
        this.setState({ children });
    }
    render(){
        return(<Children changeChildren={this.changeChildren} />);
    }
}
class Children extends React.Component{
    render(){
        return(<Button onClick={this.props.changeChildren()}>changeChildren</Button>);
    }
}

从上面代码可以看出组件的层级越高,state的状态可操作性越强
简单的说redux将Parent的状态脱离组件,形成一个独立的数据结构,并凌驾于所有组件之上。
redux的state有以下特点:
1、单一数据源
2、只能是只读状态
3、每一时刻对应一种视图状态

redux的action:
用户只能操作视图层,用户改变ui层的记录

redux的redcuer:
1、它是一个具有state初始值,并有改变state值的方法的纯函数
2、可接受action作为参数 改变state
3、用来生成或者改变state的纯函数
4、可拆分reducer

redux的Store:
提供改变、获取state方法的容器,接收reduer作为参数

简单的讲:
这里的Store提供的方法store.dispatch(action)相当于上诉代码的changeChildren方法
reducer方法生成state相当于上述代码定义 state={}
而store = createStore(reducer);


handsome
14 声望0 粉丝